function A307()
format long;
% STFT用一个随时间平移的窗函数将原来的非平稳信号分为若干平稳或近似平稳段，然后逐段确定其频谱。
% 加载数据 
data1 = xlsread('A3_data_single.xlsx'); % 加载数据
data2 = xlsread('A3_data_double.xlsx'); % 加载数据

r1_ucolumn = data1(:, 150);  
r2_ucolumn = data2(:, 150);  

% 对 r1_column 进行归一化处理
r1_min = min(r1_ucolumn);
r1_max = max(r1_ucolumn);
r1_column = (r1_ucolumn - r1_min) / (r1_max - r1_min);

% 对 r2_column 进行归一化处理
r2_min = min(r2_ucolumn);
r2_max = max(r2_ucolumn);
r2_column = (r2_ucolumn - r2_min) / (r2_max - r2_min);

% 原始A-Scan图
subplot(2, 3, 1);
hold on
plot(r1_column, 'b-', 'LineWidth', 1.5);
plot(r2_column, 'r-', 'LineWidth', 1.5);
xlabel('采样点');
ylabel('幅值');
title('原始A-Scan图');
legend('单排钢筋', '双排钢筋');
hold off

% 使用傅里叶变换计算频谱
Y1 = fft(r1_column);
Y2 = fft(r2_column);
f = (0:length(Y1)-1) * (1/length(Y1)); % 频率轴

% 单排A-Scan的傅里叶变换（幅度谱）
subplot(2, 3, 2);
hold on; % 开始保持当前图形，以便在同一图上绘制
plot(f, abs(Y1), 'b', 'LineWidth', 1.5); 
plot(f, abs(Y2), 'r', 'LineWidth', 1.5); 
legend('单排钢筋', '双排钢筋');
hold off; % 结束保持当前图形

xlabel('频率 (Hz)');
ylabel('幅度');
title('单排和双排A-Scan的傅里叶变换幅度谱');
xlim([0, 0.01]); % 限制频率范围
ylim([0, 100]); % 根据幅度设置y轴的范围

% 对数幅值谱对比
amplitude_dB1 = 20 * log10(abs(Y1));
amplitude_dB2 = 20 * log10(abs(Y2));

subplot(2, 3, 3);
hold on;
plot(f, amplitude_dB1, 'b');
plot(f, amplitude_dB2, 'r');
xlabel('频率 (Hz)');
ylabel('幅度 (dB)');
title('对数幅值谱对比');
legend('单排钢筋', '双排钢筋');
hold off;

% 设置 STFT 参数
window_size = 256; % 窗口大小 
noverlap = window_size/2;    % 重叠部分
nfft = window_size;        % FFT 点数

% 对r1数据执行 STFT
[s1, f1, t1] = stft(r1_column, 'Window', hann(window_size), ...
                 'OverlapLength', noverlap, 'FFTLength', nfft);

% 单排A-Scan的短时傅里叶变换（3D显示）
subplot(2, 3, 4);
surf(t1, f1, 20*log10(abs(s1)), 'EdgeColor', 'none'); % 幅度谱
axis xy;
colormap jet;
colorbar;
xlabel('Samples');
ylabel('频率 (Hz)');
title('单排A-Scan的短时傅里叶变换');
view(45, 30); % 调整视角

% 对r2数据执行 STFT
[s2, f2, t2] = stft(r2_column, 'Window', hann(window_size), ...
                 'OverlapLength', noverlap, 'FFTLength', nfft);

% 双排A-Scan的短时傅里叶变换（3D显示）
subplot(2, 3, 5);
surf(t2, f2, 20*log10(abs(s2)), 'EdgeColor', 'none'); % 幅度谱
axis xy;
colormap jet;
colorbar;
xlabel('Samples');
ylabel('频率 (Hz)');
title('双排A-Scan的短时傅里叶变换');
view(45, 30); % 调整视角

% 确保频率和时间轴一致
diff_spectrum = 20*log10(abs(s1)) - 20*log10(abs(s2));
% 绘制幅度谱差异（3D显示）
subplot(2, 3, 6); 
surf(t1, f1, diff_spectrum, 'EdgeColor', 'none'); % 使用 t1 和 f1 作为时间和频率轴
axis xy;
colorbar; 
xlabel('Samples'); 
ylabel('频率 (Hz)'); 
title('幅度谱差异');
view(45, 30); % 调整视角

end